PHLEGM v6 - NES Async Presentation Fix - 2026-10-03

Scope
-----
NES host presentation only. PPU/APU emulation, CPU timing, frame latching, GUI,
filters, sessions, compiler/bootstrap, and unrelated machine behavior are unchanged.

Finding
-------
The current v6 path correctly rasterizes the NES frame in MachineServiceVideoRefresh()
before presentation, but MachinePresentDisplayNow() then synchronously called
UpdateWindow() for device-latched NES displays. That forced Windows paint cost into
the emulation hot path. PPU/APU diagnostic bypasses therefore could not recover full
speed because synchronous host painting still occurred every presented frame.

Fix
---
* Preserve the lightweight pre-NMI/vblank frame latch.
* Preserve scheduled NES rasterization before presentation.
* Preserve presentation-only WM_PAINT behavior.
* Keep InvalidateRect() in MachinePresentDisplayNow().
* Remove the NES-specific UpdateWindow() call so presentation is asynchronous.
* Let GuiPumpMessages() service the pending paint after timed machine video/audio work.

Invariant
---------
MachinePresentDisplayNow() must never synchronously paint a machine display. Frame
production is complete before invalidation; host paint latency must not throttle
emulated CPU/PPU/APU time.
